package cc.magicjson.synthesis.factory;


import cc.magicjson.synthesis.chain.CouponDiscountChecker;
import cc.magicjson.synthesis.chain.DiscountChecker;
import cc.magicjson.synthesis.chain.FinalAmountChecker;
import cc.magicjson.synthesis.chain.PointsDiscountChecker;

/**
 * 折扣检查器工厂，用于创建各种折扣检查器
 */
public class DiscountCheckerFactory {

    /**
     * 创建积分折扣检查器
     * @param pointsPerYuan 积分兑换比例：多少积分兑换1元
     * @return 积分折扣检查器
     */
    public static DiscountChecker createPointsDiscountChecker(int pointsPerYuan) {
        return new PointsDiscountChecker(pointsPerYuan);
    }

    /**
     * 创建优惠券折扣检查器
     * @return 优惠券折扣检查器
     */
    public static DiscountChecker createCouponDiscountChecker() {
        return new CouponDiscountChecker();
    }

    /**
     * 创建最终金额检查器
     * @return 最终金额检查器
     */
    public static DiscountChecker createFinalAmountChecker() {
        return new FinalAmountChecker();
    }

    /**
     * 创建完整的折扣检查责任链
     * @param pointsPerYuan 积分兑换比例：多少积分兑换1元
     * @return 折扣检查责任链
     */
    public static DiscountChecker createDiscountChain(int pointsPerYuan) {
        return createPointsDiscountChecker(pointsPerYuan)
                .next(createCouponDiscountChecker())
                .next(createFinalAmountChecker());
    }
}
